import { ColDef, ICellRendererParams } from '@ag-grid-community/core'

/** 列表项 */
export type IEventTemplateItem = IEventTemplateODTO & {
  /** 虚拟字段，用于列配置 */
  ['序号']?: null
}

/** columnDefs 配置项 */
export type TCol<T extends keyof IEventTemplateODTO = keyof IEventTemplateODTO> = ColDef<
  IEventTemplateODTO,
  IEventTemplateODTO[T]
> & {
  field: T
}

/** cellRendererParams */
export type TCellParams<T extends keyof IEventTemplateODTO = keyof IEventTemplateODTO> = ICellRendererParams<
  IEventTemplateODTO,
  IEventTemplateODTO[T]
>

/** 轨迹事件模板请求入参 */
export interface IEventTemplateReq {
  /**
   * 类型 1.Information 2.Notification 3.Alert
   */
  messageType?: number
  /**
   * 中文描述、英文描述，可模糊搜索
   */
  searchWord?: string
  /**
   * ShipTrack要求 1.必须 2.可选 置空为全部
   */
  shipTrackRequire?: number
  /**
   * 状态组 1.不影响 2.主状态 3.报关状态 4.清关状态 5.预约状态
   */
  statusGroup?: number
  /**
   * 客户可见 0-否 1-是 置空为全部
   */
  visibleFlag?: number
  /**
   * 启用状态: 0-否 1-是 置空为全部
   */
  enableFlag?: number
  /**
   * 页签ID 0.全部 1.启用 2.禁用
   */
  tabId?: number

  page: number
  size: number
}

/** 轨迹事件模板响应 */
export interface IEventTemplateRes {
  /**
   * 当前页
   */
  current?: number
  /**
   * 总页数
   */
  pages?: number
  /**
   * 查询数据列表
   */
  records?: IEventTemplateODTO[]
  /**
   * 每页显示条数
   */
  size?: number
  /**
   * 总数
   */
  total?: number
}

/** 轨迹事件模板对象 */
export interface IEventTemplateODTO {
  /**
   * 启用状态: 0-否 1-是
   */
  enableFlag?: number
  /**
   * 地点类型: 1-始发地 2-集货仓 3-起运港 4-目的港 5-中转仓 6-目的地
   */
  locationType?: number
  /**
   * 消息类型: 1-Information 2-Notification 3-Alert
   */
  messageType?: number
  /**
   * 头程运输方式 1.OCEAN 2.AIR 3.GROUND_TRUCK 4.GROUND_TRAIN
   */
  firstLines?: number[]
  /**
   * 轨迹模板ID
   */
  eventTemplateId?: number
  /**
   * 轨迹事件原因码
   */
  reasonCode?: string
  /**
   * ShipTrack要求: 1-必须 2-可选
   */
  shipTrackRequire?: number
  /**
   * 具体状态编码 11-仓库处理 12-待付费 13-其他 | 21-已创建 22-已收货 23-运输中 24-运输延误 | 31-报关中 32-报关完成 33-报关异常 |
   * 41-已清关 42-待查验 43-清关异常 | 51-已预约 52-预约变更 53-预约取消
   */
  status?: number
  /**
   * 轨迹事件状态码
   */
  statusCode?: string
  /**
   * 状态组: 1-不影响 2-主状态 3-报关状态 4-清关状态 5-预约状态
   */
  statusGroup?: number
  /**
   * 尾程运输方式: 1-快递 2-卡车 3-Amazon Freight
   */
  tailLines?: number[]
  /**
   * 中文描述
   */
  templateCn?: string
  /**
   * 英文描述
   */
  templateEn?: string
  /**
   * 时间戳说明
   */
  timestampDescription?: string
  /**
   * '修改时间'
   */
  updateAt?: string
  /**
   * 客户可见: 0-否 1-是
   */
  visibleFlag?: number
}

export interface IAddEventTemplateReq {
  /**
   * 启用状态: 0-否 1-是
   */
  enableFlag?: number
  /**
   * 头程运输方式: 1-AIR 2-OCEAN 3-GROUND_TRAIN 4-GROUND_TRUCK
   */
  firstLine?: number
  /**
   * 地点类型: 1-始发地 2-集货仓 3-起运港 4-目的港 5-中转仓 6-目的地
   */
  locationType?: number
  /**
   * 消息类型: 1-Information 2-Notification 3-Alert
   */
  messageType?: number
  /**
   * 轨迹事件原因码
   */
  reasonCode?: string
  /**
   * ShipTrack要求: 1-必须 2-可选
   */
  shipTrackRequire?: number
  /**
   * 具体状态编码 11-仓库处理 12-待付费 13-其他 | 21-已创建 22-已收货 23-运输中 24-运输延误 | 31-报关中 32-报关完成 33-报关异常 |
   * 41-已清关 42-待查验 43-清关异常 | 51-已预约 52-预约变更 53-预约取消
   */
  status?: number
  /**
   * 轨迹事件状态码
   */
  statusCode?: string
  /**
   * 状态组: 1-不影响 2-主状态 3-报关状态 4-清关状态 5-预约状态
   */
  statusGroup?: number
  /**
   * 尾程运输方式: 1-卡车 2-快递 3-Amazon Freight
   */
  tailLine?: number
  /**
   * 中文描述
   */
  templateCn?: string
  /**
   * 英文描述
   */
  templateEn?: string
  /**
   * 时间戳说明
   */
  timestampDescription?: string
  /**
   * 客户可见: 0-否 1-是
   */
  visibleFlag?: number
}

export interface IUpdateEventTemplateReq extends IAddEventTemplateReq {
  /**
   * 轨迹模板ID
   */
  eventTemplateId: number
}

export interface IEventTemplateDetailReq {
  /**
   * 轨迹模板ID
   */
  eventTemplateId: number
}

/** 轨迹事件模板标签数量响应 */
export interface IEventTemplateTabCountRes {
  /**
   * 订单数量
   */
  count?: number
  /**
   * 页签id，页签 0.全部 1.启用 2.禁用
   */
  tabId?: number
}
